#pragma once

#include <iostream>

namespace HenkoCppLib
{
	typedef std::exception Exception;

	class NotSupportedException : public Exception
	{
		public:
			const char* what() const throw();
	};

	class ReadOnlyException : public Exception
	{
		public:
			const char* what() const throw();
	};

	class InvalidPointerException : public Exception
	{
		public:
			const char* what() const throw();
	};

	class OutOfBoundsException : public Exception
	{
	public:
		OutOfBoundsException(int value, int lowbound, int highbound);
		const char* what() const throw();

	private:
		int value;
		int lowbound;
		int highbound;
	};

	class InvalidValueException : public Exception
	{
	public:
		InvalidValueException(int value);
		const char* what() const throw();

	private:
		int value;
	};

	class InvalidValuesException : public Exception
	{
	public:
		const char* what() const throw();
	};
}
